Repository navigation
Conversation
…rations css(a, b) composing classes whose styles the build knows, bound to css() in the file or exported by another module, merges their atoms per property, selector, breakpoint and layer, conditions included, instead of joining classes whose winner the stylesheet order picked. vanilla-extract style([...]) passes each composed style as its own argument, keeping a style composed again later. Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…asurable Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…JSX spreads win Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…led order and JSX element className Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…uate shouldForwardProp at build time Refs #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…ring Refs #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #691 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
… and conditional styles Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…h Emotion Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…ed parameters Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…e build compiles Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…mpiles Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…s3901/w24-types-rest
Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Contributor
Changepacks@devup-ui/wasm@1.0.83 → 1.0.84 - bindings/devup-ui-wasm/package.jsonPatch
@devup-ui/bun-plugin@1.0.22 → 1.0.23 - packages/bun-plugin/package.jsonPatch
@devup-ui/components@0.1.60 → 0.1.61 - packages/components/package.jsonPatch
@devup-ui/eslint-plugin@1.0.22 → 1.0.23 - packages/eslint-plugin/package.jsonPatch
@devup-ui/next-plugin@1.0.90 → 1.0.91 - packages/next-plugin/package.jsonPatch
@devup-ui/plugin-utils@1.0.17 → 1.0.18 - packages/plugin-utils/package.jsonPatch
@devup-ui/react@1.0.44 → 1.0.45 - packages/react/package.jsonPatch
@devup-ui/reset-css@1.0.31 → 1.0.32 - packages/reset-css/package.jsonPatch
@devup-ui/rsbuild-plugin@1.0.67 → 1.0.68 - packages/rsbuild-plugin/package.jsonPatch
@devup-ui/vite-plugin@1.0.73 → 1.0.74 - packages/vite-plugin/package.jsonPatch
@devup-ui/webpack-plugin@1.0.71 → 1.0.72 - packages/webpack-plugin/package.jsonPatch
|
Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Codecov Report✅ All modified and coverable lines are covered by tests.
🚀 New features to boost your workflow:
|
No conflicted files; preserve composition changes and main ESLint checks.
No conflicted files; combine updated parent and PR changes.
No conflicted files; combine updated parent and PR changes.
Merge main history while preserving this PR implementation. No manual conflict resolutions.
Merge main history while preserving this PR implementation. No manual conflict resolutions.
Merge main history while preserving this PR implementation. No manual conflict resolutions.
Merge main history while preserving this PR implementation. No manual conflict resolutions.
Conflicted file: libs/extractor/src/lib.rs. Retain both composition helper and regression tests from PR 706 and Tailwind per-class regression tests from main 11790be; take rewritten main Tailwind implementation with Rust 1.99 assertions. bun.lock regenerated by bun install; no snapshots were hand-merged. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Merge updated parent PR 706 (30247ba), containing main 11790be. Conflicted file: libs/extractor/src/prop_modify_utils.rs. Preserve PR 707's last-written className/style spread semantics and no spread_props parameter with capacity 2, together with main's per-class Tailwind compiler. No snapshots were hand-merged. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Merge updated parent PR 727 (12328b9), containing main 11790be. Conflicted file: packages/bun-plugin/src/plugin.ts. Preserve PR 728's readJsxImportSource alias discovery and main PR 703's compiledPackages scanner, Bun.build stylesheet deferral, runtime writes and debug policy; keep main PR 704 plugin CSS behavior. WASM/root builds and real Bun stylesheet regression passed; no snapshots were hand-merged. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
No conflicted files; exact squashed head already contained, so preserve identical content.
Merge updated parent PR 738 (0dcb717), containing main 11790be. Conflicts: bun.lock and packages/bun-plugin/src/plugin.ts. Regenerate bun.lock from main with bun install; retain PR 763's synchronous normalizeShorthands validation in main's DevupUI factory and pass normalized shorthands to initialize, preserving Bun.build/runtime CSS and debug behavior. Previously merged #733 squash b711ed1 with ours only after proving exact fa67537 and all earlier main ancestry, with unchanged tree. Fresh WASM/root builds and all 6 Bun CSS regressions pass. Refs #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Merge updated parent PR 735 (9e59c52), containing main 11790be. Conflicted file: packages/eslint-plugin/src/rules/style-order-range/index.ts. Retain PR 763's report for a missing styleOrder value while keeping main/PR 735's scope restriction to recognized style components and supported utility arguments; canonical integer/string validation remains unchanged. Fresh WASM/root builds and targeted real ESLint rule tests pass. #733 squash was already marked with an unchanged-tree ours merge after exact original-head and preceding-main ancestry checks. Refs #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Restore the released package versions from main 11790be/#700 and remove three already-consumed changepacks accidentally retained when ours merge4473674c marked earlier main history integrated without its contents. Retain every StyleX/shorthand/lint feature and plugin-utils type-test/build commands, regenerating only the nine workspace version entries with bun install. This coherent release-baseline restoration prevents publishing older versions or replaying already-released changes; fresh WASM/root builds and exact manifest/feature assertions pass. Refs #684 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Restore pinned main 11790be's parked-forwarded CSS and post-restoration plugin pair, full vinext RSC fixture, both-mode CI job, root script and resolver lock after the unchanged-tree ours merge4473674c skipped #747 content. Preserve all #763 shorthand normalization, JSX-source, StyleX, type and lint intent. Local restored RSC e2e29/29 passed under6GiB; all packages built serially and Bun6071/0fail passed. Refs #763 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #684 (W24: TOOL-17, JSX-13, TOOL-07, W26/W33 타입 후속)
#738(
fix/types-match-build, #730 위의 스택)와 #735(fix/eslint-alias-rules, #733 포함)를 포함합니다. base는 Linux CI 검증을 위해main이며, 이 선행 스택이 먼저 병합되어야 합니다. 18개 dead CSS 이름의 타입은 #759의 빌드 계약을 반영하므로 #759도 먼저 병합되어야 합니다.#712는 작업 시작 시 OPEN이어서 지시대로 main을 추가 병합하지 않았고 TOOL-15는 제외했습니다. #758의
createThemeContract타입 후속은 반영하되 그 컴파일러 변경을 병합하지 않았습니다. #715(#758에 포함)는 attrs의 style 객체를 attribute text로 바꾸므로 이 PR과 #758 중 나중에 병합되는 쪽이 attrs 타입을 조정해야 합니다. #756과 이 PR도 styleOrder 코드가 겹치므로 나중에 병합하는 쪽에서 런타임 오류와 새 정적 값 계약을 함께 보존해야 합니다.요약
초기 hook 통과 커밋으로 PR을 연 뒤, 아래 항목을 다섯 논리 커밋으로 추가했습니다. 각 커밋의 lint/tarpaulin/Bun 훅을 통과했고, 검사한 디스크 트리와 stage한 전체 파일을 일치시켰습니다.
when/env처럼 이 base에 없는 API는 추가하지 않습니다.동작
항목별 base 확인
Vite/Next/Webpack/Rsbuild/Bun은 생성 시 같은 normalizer를 호출합니다. Next의 production cache 재사용보다 먼저 검증합니다. camelCase와 kebab-case, 기존
py등의 대상은 순서대로 정규화하며 custom property 이름은 대소문자를 보존합니다. Rust/WASM을 직접 사용하는 등록 경계도 잘못된 target을 거부하며 이전 registry를 유지합니다.정수 Number의
100.0,1e2,+'1\n',+'0x10'는 각각100/100/1/16으로 허용합니다. plain 문자열'100.0','1e2','1\n'는 거부합니다. 조건부 JSX/jsx-runtime order의 각 정적 branch도 같은 계약을 따릅니다. 내부0과 unlayered255는 명시적인 사용자 order로 허용하지 않습니다.StyleX의 class-string 합성도 실제 WASM으로 확인하여 props/attrs input에 허용했습니다. raw CSS 객체와 opaque StyleXStyles를 혼동하지 않고 외부 class input을 별도 타입으로 표현합니다. defineConsts의 number/boolean은 문자열 결과이며, flat 변수의 조건 객체와 부분 테마 override를 지원합니다.
새로 생기는 오류
devup-ui option shorthands["bgx"][0]: shorthand "bgx" cannot use "backgroundColour" at build time: its targets must be supported CSS properties, built-in aliases or custom properties.남는 한계
검증
최종 head:
d69f519392346c5b32fccf7af2fd4911b698d924. Linux CI 37351319043는 success입니다. publish/landing-next-e2e/vinext-rsc-css-e2e/benchmark 모두 성공, Rust 100.00% (11614/11614), Bun 6060 pass / 0 fail / aggregate 함수·라인100%, Codecov 업로드 성공입니다. 기존 Vite 개별 파일99.76% 표시와 LSP 제약은 별도로 남기며 CI gate와 새 줄 검증은 통과했습니다. 수정 후 Oracle delta gate는 APPROVE이며 추가 수정 요청 없음. 여섯 커밋 모두 전체 훅 통과, 작업 트리 깨끗함.이전 37343113128은 Rust coverage99.99% (11610/11611)에서 유일한 fallback 한 줄 때문에 실패했습니다. runtime member/call이 정적 값으로 오인되지 않는 실제 회귀로 해당 경로를 검증하며 제외 설정은 추가하지 않습니다. 최종 gate 검토에서 Emotion css prop의 중첩 css() 검증 우회와 metadata 숫자의 px 변환도 발견해
d69f5193에서 수정했습니다. 새 JSX/Emotion jsx-runtime·배열 합성·위치·유효 layer 집중 회귀20개, 재빌드 WASM QA, Rust1.99 clippy와 전체 훅을 통과했습니다.cargo fmt --all, Rust 1.99 strict clippy 통과.cargo test --workspace: 2,229개 통과 / 0 실패 (CSS558, allocation1, WASM36, extractor1483, integration3, sheet147, doctest1). 새 snapshot 변경 없음.WASM 재빌드와 루트 패키지 빌드 통과.
bun test: 6,052개 통과 / 0 실패 / 함수·라인 coverage100%.bun lint: 오류0, 기반의 forwardRef/use-prefix 경고2개만 유지.빌드한 dist를 별도 소비자 node_modules에 복사하여 React19 strict 검사를 통과했습니다. suppression 없는 부정 fixture의 실제 diagnostic은 target typo TS2820, 잘못된 order/dead prop TS2769, raw StyleX 객체 TS2353, numeric contract placeholder TS2322이며 의도한 줄만 실패했습니다.
다섯 커밋 모두 훅 통과:
11e3f1cc,72781be4,d7e7c631,809f8e52,89317347. 각 commit 당시 다른 변경은 고유 label/hash stash로 보관한 뒤 그 해시만 복원했습니다. 다른 worker의 stash를 적용·삭제하지 않았습니다. 최종 작업 트리는 깨끗합니다.source 타입 테스트: React의 전체 test:types, plugin-utils shorthand test:types 통과. 새 부정 타입 검사는 suppression 없는 assignability proof입니다.
모든 adapter 생성 경계의 집중 테스트4684개 통과; 최종 root suite와 재빌드된 WASM 확인은 아래 최종 결과로 대체합니다.
공유 style-order fixture를 lint와 extractor가 함께 읽고, 위치/원래 코드/원인/수정 방법을 검사합니다. JSX/jsx-runtime/css/styled/keyframes 경로를 비교합니다.
base WASM의 실제 비교: css/styled 조건부 order는
.a{color:blue}.b{color:green}, JSX/jsx-runtime은@layer o1과@layer o2를 생성. StyleX 두 호출은--a/--a,b/b를 반환하고.b{animation-duration:1s}.b{animation-duration:2s}를 출력합니다. root/subpath import는 create/props 호출을 그대로 남깁니다.수정 후 실제 public WASM 출력
같은 오류를 jsx-runtime/css/styled/keyframes 경로에서도 실제로 확인했습니다. Emotion css prop의 중첩 css()도
emotion-order-jsx.tsx:2:67및emotion-order-runtime.tsx:2:73에서 원래'100px'오류를 보고하고, 유효한+'0x10'은@layer o16{.b{color:red}}를 생성합니다. exported registerShorthands의 typo·형식 오류 이후에도 기존 insetX registry가 유지되어 위 responsive/hover CSS가 정상 생성됩니다. browser/server 프로세스는 시작하지 않았습니다.2026-10-08 main 11790bef를 병합하여 업데이트했습니다. 포함된 #733은 동일 트리 ours 병합으로 표시했습니다. bun.lock은 main에서 재생성했고, packages/bun-plugin/src/plugin.ts는 shorthand 검증과 main의 CSS 출력을 결합했으며, style-order-range/index.ts는 별칭 범위 제한과 누락 값 오류를 모두 보존했습니다.
2026-10-08 main 역전 방지 복원 (W44c)
이전 업데이트 문구의 ours 병합 설명을 정정합니다. 원래 #763 head
d69f5193에는 main의 #747 RSC CSS 수정(원래 구현5faaa628, main squash9788c959)과 #700 릴리스 기준a935315c의 내용이 아직 없었습니다.4473674c에서 #733b711ed1f를 unchanged-treeours로 병합하면서 그 부모인a935315c(#700)와9788c959(#747)도 내용 없이 이미 병합된 것으로 표시했고, 뒤의 main 병합은 이 누락을 자동 복구하지 못했습니다. 의도적인 revert가 아니라 이 최초 통합 커밋부터 발생한 누락입니다.origin/main...HEAD와origin/main HEAD의 전체 경로·커밋 의도를 대조한 감사에서 33개 우발적 역전 경로를 확인했습니다.4825e4be에서 9개 이미 출시된 패키지 버전과 소비 완료 changepack 3개의 부재를 복원했고, 이번baabf698f85d84f9c7feb3298f093199787a259d에서는 pinned main11790bef의 Vite parked-forwarded-CSS/후처리 restoration plugin 쌍, RSC manager가 추적하는 서버 page CSS 의존성, 전체apps/vinext-rsc-css-reprofixture,playwright.rsc-css.config.ts,test:e2e:rsc-cssscript 및 per-file/singleCss 양쪽을 실행하는vinext-rsc-css-e2eCI job을 그대로 복원했습니다. 기존importedCss.deleteforwarding workaround는 제거했으며bun install로 재생성한 lock graph도 main과 일치합니다. StyleX·shorthand 생성 경계·JSX import-source·타입·lint의 #763 의도와 나머지 204개 의도된 경로는 변경하지 않았습니다.로컬 RSC e2e는 CI를 unset하고 CARGO_BUILD_JOBS=2, 전체 자식 프로세스 6 GiB 메모리 watchdog 아래에서 한 번 실행하여 29개 모두 통과했습니다(peak 1.93 GiB, 종료 후 자식 프로세스 0개). 실제 훅도 CI unset·12 GiB watchdog으로 통과했으며(Bun 6,071 pass/0 fail, peak 3.60 GiB), rebase/amend/force-push 없이 ordinary commit을 정상 push했습니다. 최종 CI 37794943560는 정확한 head
baabf698f85d84f9c7feb3298f093199787a259d에서 success이고, RSC per-file/singleCss를 포함한 모든 check가 green이며 PR은 MERGEABLE/CLEAN입니다. #767은 #763 고유 커밋을 포함하지 않아 draftf01f04cb그대로 두었고 PR을 병합하지 않았습니다.